﻿/**
 * @file templatestylebutton.h
 * @author huangxb
 * @email 18228033207@163.com
 * @date 2025-04-16
 * @brief 模板样式button.
 */
#ifndef TEMPLATESTYLEBUTTON_H
#define TEMPLATESTYLEBUTTON_H

#include <QPushButton>

/** @brief 模板样式button */
class CTemplateStyleButton : public QPushButton
{
    Q_OBJECT

private:
    QString m_strTemplateName; /**< 模板样式名称 */
    QString m_strTemplateImage; /**< 模板样式图片路径 */
    QString m_strText; /**< 按钮文本 */

    QScopedPointer<QPixmap> m_spPixmapTemplate; /**< 模板样式对应的图片 */

public:
    explicit CTemplateStyleButton(QWidget *parent = nullptr);
    explicit CTemplateStyleButton(const QString &text, QWidget *parent = nullptr);

    /**
     * @brief 设置模板样式.
     * @param[in] strTemplateName 名称
     * @param[in] strTemplateImage 图片路径
     */
    void SetTemplateStyle(const QString& strTemplateName, const QString& strTemplateImage);

    /**
     * @brief 设置按钮文本.
     * @param[in] strText 文本
     */
    void setText(const QString &strText);

    /**
     * @brief 获取按钮文本.
     * @return 文本
     */
    QString text() const;

protected:
    /** @see QPushButton#paintEvent */
    void paintEvent(QPaintEvent* event) override;
};

#endif // TEMPLATESTYLEBUTTON_H
